#ifndef FRMLISTEELEVE_H
#define FRMLISTEELEVE_H

#include <QWidget>
#include <QMessageBox>
#include <QMenu>
#include <QDebug>
#include <QStringList>
#include "listeeleve.h"
#include "listeelevemodel.h"
#include "ui_frmlisteeleve.h"
#include "fenimprimerfacture.h"
#include "mysortfilterproxymodel.h"

namespace Ui {
    class frmListeEleve;
}

class frmListeEleve : public QWidget, public Ui::frmListeEleve
{
    Q_OBJECT

public:
    explicit frmListeEleve(QWidget *parent = 0);
    ~frmListeEleve();
    void SetData(ListeEleve &listeEleve, Prof prof, bool connectionProf);
    void UpdateView();

private slots:
    void MenuContext(const QPoint &p);
    void ModifierClic();
    void SupprimerClic();
    void FusionnerClic();
    void VisualiserClic();
    void VisualiserClic(QModelIndex modelIndex);
    void VisualiserPaiement(QModelIndex modelIndex);
    void ImprimerFacture();
    void VisibleInvisible();
    void AjouterUnEleve();
    void AjouterUnCours();
    void AjouterPlusieursCours();
    void AjouterUnPaiement();
    void SetFilter(const QString & pattern);
    void AfficherElevesSuivantProf(int index);

signals:
    void SupprimerEleve(ListeEleve);
    void FusionnerEleve(int);
    void ModifierEleve(int);
    void VisualiserEleve(int);
    void VisibleInvisibleEleve(int);
    void AjouterUnEleveSignal();
    void AjouterUnCoursSignal(Eleve);
    void AjouterPlusieursCoursSignal(Eleve);
    void AjouterUnPaiementSignal(int);
    void TransmetListeEleveEtProfConnecte(ListeEleve&, Prof, bool, Eleve);
    void UpdateUI();

private:
    Ui::frmListeEleve *ui;
    ListeEleve *m_ListeEleve;
    ListeEleveModel *m_listeEleveModel;
    Prof MonProf;
    bool ProfConnecteEtat;
    bool ToutAfficher;
    QSortFilterProxyModel *proxyModel;
    QSortFilterProxyModel *proxyModelProf;
    QSortFilterProxyModel *proxyModelProfRemplacant;
    QString m_filtreProf;
    QString qsEuro;
};

#endif // FRMLISTEELEVE_H
